react-swiss.test.ts ➔ RWrong   A
last analyzed

Complexity

Conditions 1

Size

Total Lines 1
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 1
dl 0
loc 1
rs 10
c 0
b 0
f 0
1
import {
2
  Component
3
} from "react"
4
import type {
5
  ClassNamed,
6
  ClassHash,
7
} from "./main.types"
8
import type {
9
  ReactRelated,
10
} from "./definitions.types"
11
import type {
12
  GetProps
13
} from "./react-swiss.types"
14
15
describe("ReactRelated", () => {
16
  type Getter<T extends ReactRelated> = GetProps<T>
17
18
  type Without = ClassNamed
19
  type Wrong = ClassNamed & {classnames: string}
20
  type Some = ClassNamed & {classnames: Record<string, ClassHash>}
21
  type Props = ClassNamed & {classnames: {class1: ClassHash; class2: ClassHash;}}
22
23
  it("Component", () => {
24
    class RWithout extends Component<Without> {};
25
    class RWrong extends Component<Wrong> {};
26
    class RSome extends Component<Some> {};
27
    class RProps extends Component<Props> {};
28
29
    //@ts-expect-error
30
    type x =
31
    | Getter<typeof RProps>
32
    //@ts-expect-error
33
    type Res =
34
    //@ts-expect-error
35
    | Getter<typeof RWithout>
36
    //@ts-expect-error
37
    | Getter<typeof RWrong>
38
    //Consider @ts-expect-error
39
    | Getter<typeof RSome>
40
    | Getter<typeof RProps>
41
42
    expect(true).toBe(true)
43
  })
44
45
  it("Function", () => {
46
    function RWithout(_: Without) {return null};
47
    function RWrong(_: Wrong) {return null};
48
    function RSome(_: Some) {return null};
49
    function RProps(_: Props) {return null};
50
51
    // type RF = (props: {classnames: any}) => ReactElement<any, any> | null
52
53
    // const ch1: Props extends {classnames: any} ? true : false = true
54
    // const ch2: Parameters<typeof RProps>[0] extends {classnames: any} ? true : false = true
55
    // const ch3: Parameters<typeof RProps>[0] extends Parameters<RF>[0] ? true : false = true
56
57
    //@ts-expect-error
58
    type Res =
59
    //TODO @ts-expect-error
60
    | Getter<typeof RWithout>
61
    //TODO @ts-expect-error
62
    | Getter<typeof RWrong>
63
    //Consider @ts-expect-error
64
    | Getter<typeof RSome>
65
    | Getter<typeof RProps>
66
67
    expect(true).toBe(true)
68
  })
69
})
70